____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Common Language Runtime
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Die Common Language Runtime, kurz CLR, ist der Name der virtuellen Laufzeitumgebung von klassischen .Net-Framework-Anwendungen. Die CLR stellt damit eine konkrete Implementierung der Laufzeitumgebung der Common Language Infrastructure fΓΌr das .NET Framework dar. Die CLR fΓΌhrt nicht direkt den Programmcode einer hΓΆheren Programmiersprache aus, sondern interpretiert Common Intermediate Language-Code (ECMA-Bezeichnung, frΓΌher Microsoft Intermediate Language). DafΓΌr wird der Programmcode einer .NET Sprache (C#, J#, F#, C++/CLI β¦) mittels eines sprachabhΓ€ngigen Compilers in CIL-Code ΓΌbersetzt. Dies bietet unter anderem den Vorteil, dass Teile eines Programms in unterschiedlichen Programmiersprachen geschrieben werden kΓΆnnen.
Contents
β’ Adaptionen
β’ Literatur
β’ Einzelnachweise
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ErklΓ€rung und Funktionsweise
Wird ein Programm aus einer .NET-Programmiersprache ΓΌbersetzt, werden zunΓ€chst Assemblies (Dateiendungen .exe oder .dll) erzeugt, welche den ΓΌbersetzten CIL-Code sowie diverse Header und Metadaten enthalten. Dieser Schritt muss von einem sprachspezifischen Compiler vorgenommen werden. Bei CIL-Code handelt es sich um einen Zwischencode, der von der CLR verwaltet wird und der deshalb auch als managed code bezeichnet wird, als verwalteter Code β in Abgrenzung zu unmanaged code bzw. nativem Code. Zur Laufzeit des Programms werden die geladenen Assemblies von einem Just-in-time-Compiler, welcher Bestandteil der CLR ist, in nativen Code (Maschinencode) ΓΌbersetzt, welcher von der CPU ausgefΓΌhrt werden kann.
Die von der CLR angebotenen Dienste kΓΆnnen von den Programmiersprachen genutzt werden, in denen die jeweilige Anwendung programmiert wurde. Zu diesen Diensten gehΓΆren unter anderem Garbage Collection, Ausnahmebehandlung und die Sicherstellung von Code Access Security. Die CLR ist angewiesen auf das Common Type System, d. h. eine Sammlung von Typen und Funktionen, die in vielen Programmiersprachen unterstΓΌtzt werden.
Die CLR ist die Implementierung der Komponente Virtual Execution System, die zu dem Standard Common Language Infrastructure gehΓΆrt, fΓΌr das .NET Framework.cite-ref-1[1]
Adaptionen
Es gibt weitere Laufzeitumgebungen, die die CLR adaptieren und diesen Namen mitverwenden:
β’ Mono enthΓ€lt eine Laufzeitumgebung nach dem Vorbild von der des .NET Frameworks, sie wird mitunter auch als CLR bezeichnet.
β’ CoreCLR ist der Name der Laufzeitumgebung, die im modularen, quelloffenen Framework .NET Core verwendet wird.cite-ref-2[2]
β’ .NET Native enthΓ€lt eine Laufzeitumgebung, fΓΌr die auch CLR als Name verwendet wird. Sie kommt bei der AusfΓΌhrung von Universal Windows Platform Apps fΓΌr Windows 10 zum Einsatz. Diese Anwendungen werden nicht in CIL-Code ausgeliefert, sondern direkt in nativem Code. Die Just-in-time-Kompilierung entfΓ€llt.cite-ref-3[3]
Literatur
β’ Don Box, Chris Sells: Essential .NET, Volume 1: The Common Language Runtime, Addison-Wesley 2002, ISBN 978-0-201-73411-9
β’ Kevin Burton: .NET Common Language Runtime Unleashed, SAMS 2002, ISBN 978-0-672-32124-5
β’ Jeffrey Richter: CLR via C#, 4. Auflage, Microsoft Press 2012, ISBN 978-0-7356-6745-7
β’ Dana L. Wyatt, Robert J. Oberg: Introduction to Visual Basic Using .NET, Prentice Hall 2002, ISBN 978-0-13-041804-3
Einzelnachweise
cite-note-11. β Mohammad Rahman: C# Deconstructed: Discover how C# works on the .NET Framework. Apress, 2014, ISBN 978-1-4302-6670-9, S. 16.
cite-note-22. β Neil McAllister: Microsoft takes lid off .Net Common Language Runtime sauce. In: The Register. 3. Februar 2015, abgerufen am 9. Dezember 2015 (englisch).
cite-note-33. β Holger Schwichtenberg: Zwei auf einen Streich. In: Windows Developer. Nr. 10, 2015, S. 8 ff. (online archiviert).